package com.vehiclemanagement.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vehiclemanagement.entity.Vehicle;

import java.util.List;

/**
 * 车辆服务接口
 */
public interface VehicleService extends IService<Vehicle> {
    
    /**
     * 分页获取车辆列表
     */
    IPage<Vehicle> pageVehicles(int current, int size, String searchTerm, String vehicleType, Integer status, Boolean includeDeleted);
    
    /**
     * 分页获取车辆列表（带排序）
     */
    IPage<Vehicle> pageVehicles(int current, int size, String searchTerm, String vehicleType, Integer status, Boolean includeDeleted, String orderBy, String orderType);

    /**
     * 分页查询车辆列表（多字段排序）
     */
    IPage<Vehicle> pageVehiclesWithMultiSort(int current, int size, String searchTerm, String vehicleType, Integer status, Boolean includeDeleted, String orderFieldsJson);
    
    /**
     * 获取车辆详情
     */
    Vehicle getVehicleById(Long id);
    
    /**
     * 添加车辆
     */
    boolean addVehicle(Vehicle vehicle);
    
    /**
     * 更新车辆
     */
    boolean updateVehicle(Vehicle vehicle);
    
    /**
     * 删除车辆
     */
    boolean deleteVehicle(Long id);
    
    /**
     * 检查指定车牌号的车辆是否存在（非删除状态）
     */
    boolean existsActiveVehicleWithPlateNumber(String plateNumber);
    
    /**
     * 检查车辆是否存在（根据ID）
     */
    boolean exists(Long id);
    
    /**
     * 获取车辆类型列表
     */
    List<String> getVehicleTypes();
    
    /**
     * 获取可用车辆列表
     */
    List<Vehicle> getAvailableVehicles();
    
    /**
     * 获取所有车辆数据（用于导出）
     */
    List<Vehicle> getAllVehiclesForExport(String searchTerm, String vehicleType, Integer status);
    
    /**
     * 批量添加车辆
     */
    boolean batchAddVehicles(List<Vehicle> vehicles);
} 